

OBJ=obj
SRC=src
EXE=bin
CPPFLAGS=-c -g -O0 -std=c++11
LDFLAG=-std=c++11 -L./ -lleetcode1
CXX=g++

SRCFILES=
OBJFILES=$(OBJ)/mergeIntervals.o \
         $(OBJ)/jumpGame.o \
         $(OBJ)/cloneGraph.o \
         $(OBJ)/validNum.o \
         $(OBJ)/addBinary.o \
         $(OBJ)/formatLine.o \
         $(OBJ)/editDist.o \
         $(OBJ)/minSubStrWin.o \
         $(OBJ)/subsets.o \
         $(OBJ)/histogram.o \
         $(OBJ)/linkListUtilities.o \
         $(OBJ)/partitionList.o
	
all: leetcode1.dll \
     testMergeIntervals.exe \
     testJumpGame.exe \
     testValidNum.exe \
     testAddBin.exe \
     testFormatLine.exe \
     testEditDist.exe \
     testMinSubstrWin.exe \
     testSubsets.exe \
     testHistogram.exe \
     testPartition.exe \
     install

$(OBJ)/%.o : $(SRC)/%.cpp
	$(CXX) $(CPPFLAGS) -o $@ $<

leetcode1.dll : $(OBJFILES)
	$(CXX) -shared -o $@ $^

testMergeIntervals.exe : $(OBJ)/testMergeIntervals.o 
	$(CXX) $(LDFLAG) -o $@ $^

testJumpGame.exe : $(OBJ)/testJumpGame.o 
	$(CXX) $(LDFLAG) -o $@ $^

testValidNum.exe : $(OBJ)/testValidNum.o 
	$(CXX) $(LDFLAG) -o $@ $^

testAddBin.exe : $(OBJ)/testAddBin.o 
	$(CXX) $(LDFLAG) -o $@ $^

testFormatLine.exe : $(OBJ)/testFormatLine.o 
	$(CXX) $(LDFLAG) -o $@ $^

testEditDist.exe : $(OBJ)/testEditDist.o 
	$(CXX) $(LDFLAG) -o $@ $^

testMinSubstrWin.exe : $(OBJ)/testMinSubstrWin.o 
	$(CXX) $(LDFLAG) -o $@ $^

testSubsets.exe : $(OBJ)/testSubsets.o 
	$(CXX) $(LDFLAG) -o $@ $^

testHistogram.exe : $(OBJ)/testHistogram.o 
	$(CXX) $(LDFLAG) -o $@ $^

testPartition.exe : $(OBJ)/testPartition.o 
	$(CXX) $(LDFLAG) -o $@ $^

install:
	mv *.exe $(EXE)/.
	mv *.dll $(EXE)/.

clean:
	rm -rf 	$(OBJ)/*.o $(EXE)/*.exe $(EXE)/*.dll
